package gc2012.round1a;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;

import org.korifey.ffalg.NumberTheory;

import common.AbstractRunner;
import common.AbstractRunner.SIZE;

public class C extends AbstractRunner {
	static double eps = 1e-8;	
	
	Car[] car;
	
	class Car implements Comparable<Car>{
		int pos;
		int vel;
		public Car(int pos, int vel) {
			super();
			this.pos = pos;
			this.vel = vel;
		}
		
		@Override
		public int compareTo(Car o) {
			if (vel == o.vel) return Integer.compare(pos, o.pos);
			return Integer.compare(vel, o.vel);			
		}

		@Override
		public String toString() {
			return "Car [pos=" + pos + ", vel=" + vel + "]";
		}
		
		
		
	}
	
	public Segment makeSegment(int i, int j) {
		if (car[i].pos - car[j].pos + 5 <= 0) return null;
		if (car[j].vel == car[i].vel) return MAX_SEGMENT;
		double start = Math.max(0, (car[i].pos - car[j].pos - 5)*1.0 / (car[j].vel - car[i].vel));
		double fin = Math.max(0, (car[i].pos - car[j].pos + 5)*1.0 / (car[j].vel - car[i].vel));
		return new Segment(start, fin);
		
	}
	
	Segment MAX_SEGMENT = new Segment(0, 1000000000);
	
	class Segment {
		double start;
		double finish;
		public Segment(double start, double finish) {
			super();
			this.start = start;
			this.finish = finish;
		}
		
		public Segment intersect(Segment other) {
			if (finish < other.start + eps || start + eps > other.finish) return null;
			return new Segment(Math.max(start, other.start), Math.min(finish, other.finish));
		}

		@Override
		public String toString() {
			return "Segment [start=" + start + ", finish=" + finish + "]";
		}
		
		
	}
	
	Segment intersect(Segment one, Segment other) {
		if (one == null || other == null) return null;
		return one.intersect(other);
	}
	
	@Override
	public void handleCase(int caseNumber) throws Exception {
		int n = scanner.nextInt();
		car = new Car[n];
		for (int i=0; i<n; i++) {
			String str = scanner.next("L|R");
			int vel = scanner.nextInt();
			int pos = scanner.nextInt();
			car[i] = new Car(pos, vel);
		}
		Arrays.sort(car);
		ArrayList<Double> res = new ArrayList<Double>();
		
		for (int i=0; i<n; i++) {
			for (int j=i+1; j<n; j++) {
				Segment ij = makeSegment(i, j);
				if (ij == null) continue;
				for (int k=j+1; k<n; k++)
				{
					Segment ik = makeSegment(i, k);					
					Segment jk = makeSegment(j, k);										
					
					Segment ijk = intersect(ij, intersect(ik, jk));
					if (ijk != null) res.add(ijk.start);
				}
			}
		}
		
		if (res.size() == 0) {
			out.write("Possible\n");
			return;
		}
		Collections.sort(res);
		out.write(res.get(0)+ "\n");
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		new C().init(SIZE.test).execute();
	}

}
